package com.gf.framework.web.translate;

import org.springframework.core.GenericTypeResolver;
import org.springframework.util.ClassUtils;

import java.util.List;

/**
 * @author gaofei
 * @param <T>
 * 翻译工具类
 */
public interface TranslateTypeConvert<T> {
    /**
     * 对象翻译
     * @param object 需要字段翻译的对象
     */
    void convert(T object);

    /**
     * 对象翻译
     * @param list 对象列表
     */
    default void convertCollection(List<T> list) {
        list.forEach(this::convert);
    }

    /**
     * 对象类型
     * @return
     */
    @SuppressWarnings("all")
    default Class<T> getTranslateType() {
        return (Class<T>) GenericTypeResolver.resolveTypeArguments(
                ClassUtils.getUserClass(this.getClass()), TranslateTypeConvert.class)[0];
    }

    /**
     * 对象执行策略顺序
     * @return 默认0，越小越优先
     */
    default int order() {
        return 0;
    }
}
